//package com.yunhe.device.service.base.impl;
//
//import com.yunhe.device.domain.base.BatteryType;
//import com.yunhe.common.exception.ArgumentErrorException;
//import com.yunhe.common.exception.ObjectNotFoundException;
//import com.yunhe.common.exception.UniqueConstraintsException;
//import com.yunhe.device.repository.base.BatteryTypeRepository;
//import com.yunhe.device.service.base.BatteryTypeService;
//import com.yunhe.common.util.StringUtil;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.Optional;
//
///**
// * 电池类型Service
// * @author liuronglei
// */
//@Service
//public class BatteryTypeServiceImpl implements BatteryTypeService {
//    @Autowired
//    BatteryTypeRepository batteryTypeRepository;
//
//    @Transactional
//    public BatteryType createBatteryType(BatteryType batteryType)
//            throws ArgumentErrorException, UniqueConstraintsException {
//        //判断电池类型代码、电池类型名称是否为空
//        if (StringUtil.isEmpty(batteryType.getName())
//                || StringUtil.isEmpty(batteryType.getTitle())) {
//            throw new ArgumentErrorException("电池类型代码、电池类型名称不能为空");
//        }
//        //判断电池类型代码是否已存在
//        BatteryType batteryTypeByName = this.findByName(batteryType.getName());
//        if (batteryTypeByName != null) {
//            throw new UniqueConstraintsException("该电池类型代码已存在");
//        }
//        //新增电池类型
//        BatteryType newBatteryType = batteryTypeRepository.save(batteryType);
//        return newBatteryType;
//    }
//
//    @Transactional
//    public void deleteBatteryType(Long batteryTypeId) {
//        batteryTypeRepository.deleteById(batteryTypeId);
//    }
//
//    @Transactional
//    public BatteryType updateBatteryType(BatteryType batteryType)
//            throws ArgumentErrorException, UniqueConstraintsException, ObjectNotFoundException {
//        if (StringUtil.isEmpty(batteryType.getName())
//                || StringUtil.isEmpty(batteryType.getTitle())) {
//            throw new ArgumentErrorException("电池类型代码、电池类型名称不能为空");
//        }
//        BatteryType batteryTypeById = this.findByBatteryTypeId(batteryType.getId());
//        if (batteryTypeById == null) {
//            throw new ObjectNotFoundException("找不到要修改的电池类型");
//        }
//        BatteryType batteryTypeByName = this.findByName(batteryType.getName());
//        if (batteryTypeByName != null && batteryTypeByName.getId().longValue() != batteryType.getId().longValue()) {
//            throw new UniqueConstraintsException("该电池类型代码已存在");
//        }
//        BatteryType newBatteryType = batteryTypeRepository.save(batteryType);
//        return newBatteryType;
//    }
//
//    @Transactional
//    public BatteryType updateBatteryType(Long batteryTypeId,
//                           String name,
//                           String title,
//                           Boolean activity)
//            throws ArgumentErrorException, ObjectNotFoundException, UniqueConstraintsException {
//        BatteryType batteryType = this.findByBatteryTypeId(batteryTypeId);
//        if (batteryType == null) {
//            throw new ObjectNotFoundException("找不到要修改的电池类型");
//        }
//        if (StringUtil.isEmpty(name)) {
//            if (StringUtil.isEmpty(name)) {
//                throw new ArgumentErrorException("电池类型代码不能为空");
//            }
//            BatteryType batteryTypeByName = this.findByName(name);
//            if (batteryTypeByName != null && batteryTypeByName.getId().longValue() != batteryType.getId().longValue()) {
//                throw new UniqueConstraintsException("该电池类型代码已存在");
//            }
//            batteryType.setName(name);
//        }
//        if (StringUtil.isEmpty(title)) {
//            if (StringUtil.isEmpty(title)) {
//                throw new ArgumentErrorException("电池类型名称不能为空");
//            }
//            batteryType.setTitle(title);
//        }
//        Optional.ofNullable(activity).ifPresent(batteryType::setActivity);
//        BatteryType newBatteryType = batteryTypeRepository.save(batteryType);
//        return newBatteryType;
//    }
//
//    public BatteryType findByBatteryTypeId(Long id) {
//        return batteryTypeRepository.findById(id).orElse(null);
//    }
//
//    public BatteryType findByName(String name) {
//        return batteryTypeRepository.findByName(name);
//    }
//
//    public Iterable<BatteryType> findBatteryTypes() {
//        Iterable<BatteryType> results = batteryTypeRepository.findAll();
//        return results;
//    }
//
//}
